<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>NeuZephyr: NeuZephyr::Nodes::Computation::ScalarSubNode Class Reference</title>
<link rel="icon" href="NZ_logo2.png" type="image/x-icon" />
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectlogo"><img alt="Logo" src="NZ_logo2.png"/></td>
  <td id="projectalign">
   <div id="projectname">NeuZephyr
   </div>
   <div id="projectbrief">Simple DL Framework</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){ initResizable(false); });
/* @license-end */
</script>
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><b>NeuZephyr</b></li><li class="navelem"><a class="el" href="namespace_neu_zephyr_1_1_nodes.html">Nodes</a></li><li class="navelem"><a class="el" href="namespace_neu_zephyr_1_1_nodes_1_1_computation.html">Computation</a></li><li class="navelem"><a class="el" href="class_neu_zephyr_1_1_nodes_1_1_computation_1_1_scalar_sub_node.html">ScalarSubNode</a></li>  </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="class_neu_zephyr_1_1_nodes_1_1_computation_1_1_scalar_sub_node-members.html">List of all members</a>  </div>
  <div class="headertitle"><div class="title">NeuZephyr::Nodes::Computation::ScalarSubNode Class Reference</div></div>
</div><!--header-->
<div class="contents">

<p>Represents a scalar subtraction operation node in a computational graph.  
 <a href="#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for NeuZephyr::Nodes::Computation::ScalarSubNode:</div>
<div class="dyncontent">
<div class="center"><img src="class_neu_zephyr_1_1_nodes_1_1_computation_1_1_scalar_sub_node__inherit__graph.png" border="0" usemap="#a_neu_zephyr_1_1_nodes_1_1_computation_1_1_scalar_sub_node_inherit__map" alt="Inheritance graph"/></div>
<map name="a_neu_zephyr_1_1_nodes_1_1_computation_1_1_scalar_sub_node_inherit__map" id="a_neu_zephyr_1_1_nodes_1_1_computation_1_1_scalar_sub_node_inherit__map">
<area shape="rect" title="Represents a scalar subtraction operation node in a computational graph." alt="" coords="5,80,219,123"/>
<area shape="rect" href="class_neu_zephyr_1_1_nodes_1_1_node.html" title="Base class for nodes in a neural network or computational graph." alt="" coords="27,5,197,32"/>
<area shape="poly" title=" " alt="" coords="115,48,115,80,109,80,109,48"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for NeuZephyr::Nodes::Computation::ScalarSubNode:</div>
<div class="dyncontent">
<div class="center"><img src="class_neu_zephyr_1_1_nodes_1_1_computation_1_1_scalar_sub_node__coll__graph.png" border="0" usemap="#a_neu_zephyr_1_1_nodes_1_1_computation_1_1_scalar_sub_node_coll__map" alt="Collaboration graph"/></div>
<map name="a_neu_zephyr_1_1_nodes_1_1_computation_1_1_scalar_sub_node_coll__map" id="a_neu_zephyr_1_1_nodes_1_1_computation_1_1_scalar_sub_node_coll__map">
<area shape="rect" title="Represents a scalar subtraction operation node in a computational graph." alt="" coords="5,80,219,123"/>
<area shape="rect" href="class_neu_zephyr_1_1_nodes_1_1_node.html" title="Base class for nodes in a neural network or computational graph." alt="" coords="27,5,197,32"/>
<area shape="poly" title=" " alt="" coords="115,48,115,80,109,80,109,48"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a0b9ba47f13eaaf29febd8c3b29bdf6eb" id="r_a0b9ba47f13eaaf29febd8c3b29bdf6eb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0b9ba47f13eaaf29febd8c3b29bdf6eb">ScalarSubNode</a> (<a class="el" href="class_neu_zephyr_1_1_nodes_1_1_node.html">Node</a> *input, Tensor::value_type scalar)</td></tr>
<tr class="memdesc:a0b9ba47f13eaaf29febd8c3b29bdf6eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor to initialize a <code><a class="el" href="class_neu_zephyr_1_1_nodes_1_1_computation_1_1_scalar_sub_node.html" title="Represents a scalar subtraction operation node in a computational graph.">ScalarSubNode</a></code> for scalar subtraction.  <br /></td></tr>
<tr class="separator:a0b9ba47f13eaaf29febd8c3b29bdf6eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84d13d33c97accd55f90a582cc0a5d9f" id="r_a84d13d33c97accd55f90a582cc0a5d9f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a84d13d33c97accd55f90a582cc0a5d9f">forward</a> () override</td></tr>
<tr class="memdesc:a84d13d33c97accd55f90a582cc0a5d9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Forward pass for the <code><a class="el" href="class_neu_zephyr_1_1_nodes_1_1_computation_1_1_scalar_sub_node.html" title="Represents a scalar subtraction operation node in a computational graph.">ScalarSubNode</a></code> to perform scalar subtraction.  <br /></td></tr>
<tr class="separator:a84d13d33c97accd55f90a582cc0a5d9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7fc0b1b32288b94521f260b372cc7b63" id="r_a7fc0b1b32288b94521f260b372cc7b63"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7fc0b1b32288b94521f260b372cc7b63">backward</a> () override</td></tr>
<tr class="memdesc:a7fc0b1b32288b94521f260b372cc7b63"><td class="mdescLeft">&#160;</td><td class="mdescRight">Backward pass for the <code><a class="el" href="class_neu_zephyr_1_1_nodes_1_1_computation_1_1_scalar_sub_node.html" title="Represents a scalar subtraction operation node in a computational graph.">ScalarSubNode</a></code> to propagate gradients.  <br /></td></tr>
<tr class="separator:a7fc0b1b32288b94521f260b372cc7b63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_class_neu_zephyr_1_1_nodes_1_1_node"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_class_neu_zephyr_1_1_nodes_1_1_node')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="class_neu_zephyr_1_1_nodes_1_1_node.html">NeuZephyr::Nodes::Node</a></td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Represents a scalar subtraction operation node in a computational graph. </p>
<p>The <code><a class="el" href="class_neu_zephyr_1_1_nodes_1_1_computation_1_1_scalar_sub_node.html" title="Represents a scalar subtraction operation node in a computational graph.">ScalarSubNode</a></code> class performs element-wise subtraction of a scalar value from a tensor. It is commonly used in computational graphs to offset tensor values or perform subtraction-based normalization tasks.</p>
<p>Key features:</p><ul>
<li><b>Forward Pass</b>: Subtracts a scalar value from each element of the input tensor and stores the result in the <code>output</code> tensor.</li>
<li><b>Backward Pass</b>: Propagates gradients from the <code>output</code> tensor back to the input tensor. Since the derivative of subtraction with respect to the input is 1, the gradient from the <code>output</code> tensor is directly transferred to the input tensor.</li>
<li><b>Shape Preservation</b>: Maintains the shape of the input tensor in the <code>output</code> tensor.</li>
<li><b>Gradient Management</b>: Tracks whether gradients are required for the operation based on the properties of the input tensor.</li>
</ul>
<p>This class is part of the <code><a class="el" href="namespace_neu_zephyr_1_1_nodes.html" title="Contains classes and functionality for nodes in a neural network or computational graph.">NeuZephyr::Nodes</a></code> namespace and facilitates scalar-tensor subtraction operations in computational graphs.</p>
<dl class="section note"><dt>Note</dt><dd><ul>
<li>The scalar value is applied consistently across all elements of the input tensor.</li>
<li>A warning is issued indicating that scalar operations do not support saving to files, and users are encouraged to use matrix operations for model persistence.</li>
</ul>
</dd></dl>
<h3><a class="anchor" id="autotoc_md44"></a>
Usage Example:</h3>
<div class="fragment"><div class="line"><span class="comment">// Example: Using ScalarSubNode for scalar subtraction</span></div>
<div class="line">InputNode input({3, 3}, <span class="keyword">true</span>);  <span class="comment">// Create an input node with shape {3, 3}</span></div>
<div class="line">input.output-&gt;fill(10.0f);  <span class="comment">// Fill the input tensor with value 10.0</span></div>
<div class="line"> </div>
<div class="line"><a class="code hl_class" href="class_neu_zephyr_1_1_nodes_1_1_computation_1_1_scalar_sub_node.html">ScalarSubNode</a> scalar_sub_node(&amp;input, 5.0f);  <span class="comment">// Subtract 5.0 from the input tensor</span></div>
<div class="line">scalar_sub_node.forward();  <span class="comment">// Perform the forward pass</span></div>
<div class="line">scalar_sub_node.backward();  <span class="comment">// Propagate gradients in the backward pass</span></div>
<div class="line"> </div>
<div class="line">std::cout &lt;&lt; <span class="stringliteral">&quot;Output: &quot;</span> &lt;&lt; *scalar_sub_node.output &lt;&lt; std::endl;  <span class="comment">// Print the result</span></div>
<div class="ttc" id="aclass_neu_zephyr_1_1_nodes_1_1_computation_1_1_scalar_sub_node_html"><div class="ttname"><a href="class_neu_zephyr_1_1_nodes_1_1_computation_1_1_scalar_sub_node.html">NeuZephyr::Nodes::Computation::ScalarSubNode</a></div><div class="ttdoc">Represents a scalar subtraction operation node in a computational graph.</div><div class="ttdef"><b>Definition</b> <a href="_nodes_8cuh_source.html#l01363">Nodes.cuh:1363</a></div></div>
</div><!-- fragment --><dl class="section see"><dt>See also</dt><dd><a class="el" href="#a84d13d33c97accd55f90a582cc0a5d9f" title="Forward pass for the ScalarSubNode to perform scalar subtraction.">forward()</a> for the scalar subtraction computation in the <a class="el" href="#a84d13d33c97accd55f90a582cc0a5d9f" title="Forward pass for the ScalarSubNode to perform scalar subtraction.">forward</a> pass. </dd>
<dd>
<a class="el" href="#a7fc0b1b32288b94521f260b372cc7b63" title="Backward pass for the ScalarSubNode to propagate gradients.">backward()</a> for gradient propagation in the <a class="el" href="#a7fc0b1b32288b94521f260b372cc7b63" title="Backward pass for the ScalarSubNode to propagate gradients.">backward</a> pass.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd><ul>
<li>Scalar operations are not yet supported for saving to files. Use matrix operations as an alternative.</li>
</ul>
</dd></dl>
<dl class="section author"><dt>Author</dt><dd>Mgepahmge (<a href="https://github.com/Mgepahmge">https://github.com/Mgepahmge</a>)</dd></dl>
<dl class="section date"><dt>Date</dt><dd>2024/12/05 </dd></dl>

<p class="definition">Definition at line <a class="el" href="_nodes_8cuh_source.html#l01363">1363</a> of file <a class="el" href="_nodes_8cuh_source.html">Nodes.cuh</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a0b9ba47f13eaaf29febd8c3b29bdf6eb" name="a0b9ba47f13eaaf29febd8c3b29bdf6eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0b9ba47f13eaaf29febd8c3b29bdf6eb">&#9670;&#160;</a></span>ScalarSubNode()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NeuZephyr::Nodes::Computation::ScalarSubNode::ScalarSubNode </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_neu_zephyr_1_1_nodes_1_1_node.html">Node</a> *</td>          <td class="paramname"><span class="paramname"><em>input</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Tensor::value_type</td>          <td class="paramname"><span class="paramname"><em>scalar</em></span>&#160;)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Constructor to initialize a <code><a class="el" href="class_neu_zephyr_1_1_nodes_1_1_computation_1_1_scalar_sub_node.html" title="Represents a scalar subtraction operation node in a computational graph.">ScalarSubNode</a></code> for scalar subtraction. </p>
<p>The constructor initializes a <code><a class="el" href="class_neu_zephyr_1_1_nodes_1_1_computation_1_1_scalar_sub_node.html" title="Represents a scalar subtraction operation node in a computational graph.">ScalarSubNode</a></code>, which performs element-wise subtraction of a scalar value from the elements of the input tensor. It establishes the connection between the input node and this node, prepares the output tensor with the appropriate shape and properties, and stores the negated scalar value for use during forward and backward passes.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">input</td><td>A pointer to the input node. Its <code>output</code> tensor will have the scalar value subtracted from it. </td></tr>
    <tr><td class="paramname">scalar</td><td>The scalar value to subtract from each element of the input tensor.</td></tr>
  </table>
  </dd>
</dl>
<ul>
<li>The input node is added to the <code>inputs</code> vector to establish the connection in the computational graph.</li>
<li>The <code>output</code> tensor is initialized with the same shape as the input tensor, and the <code>requires_grad</code> property is determined based on the input tensor's gradient requirements.</li>
<li>The scalar value is negated and stored internally for efficient computation during the forward pass.</li>
<li>A warning is issued indicating that scalar operations do not support saving to files, encouraging the use of matrix operations for models requiring persistence.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd><ul>
<li>The negation of the scalar value simplifies computation during the forward pass, treating subtraction as addition with a negated scalar.</li>
<li>This node supports automatic gradient tracking if the input tensor requires gradients.</li>
</ul>
</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a84d13d33c97accd55f90a582cc0a5d9f" title="Forward pass for the ScalarSubNode to perform scalar subtraction.">forward()</a> for the <a class="el" href="#a84d13d33c97accd55f90a582cc0a5d9f" title="Forward pass for the ScalarSubNode to perform scalar subtraction.">forward</a> pass implementation. </dd>
<dd>
<a class="el" href="#a7fc0b1b32288b94521f260b372cc7b63" title="Backward pass for the ScalarSubNode to propagate gradients.">backward()</a> for gradient propagation in the <a class="el" href="#a7fc0b1b32288b94521f260b372cc7b63" title="Backward pass for the ScalarSubNode to propagate gradients.">backward</a> pass.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd><ul>
<li>Scalar operations are not yet supported for saving to files. Use matrix operations as an alternative.</li>
</ul>
</dd></dl>
<dl class="section author"><dt>Author</dt><dd>Mgepahmge (<a href="https://github.com/Mgepahmge">https://github.com/Mgepahmge</a>)</dd></dl>
<dl class="section date"><dt>Date</dt><dd>2024/12/05 </dd></dl>

<p class="definition">Definition at line <a class="el" href="_nodes_8cu_source.html#l00211">211</a> of file <a class="el" href="_nodes_8cu_source.html">Nodes.cu</a>.</p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a7fc0b1b32288b94521f260b372cc7b63" name="a7fc0b1b32288b94521f260b372cc7b63"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7fc0b1b32288b94521f260b372cc7b63">&#9670;&#160;</a></span>backward()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void NeuZephyr::Nodes::Computation::ScalarSubNode::backward </td>
          <td>(</td>
          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Backward pass for the <code><a class="el" href="class_neu_zephyr_1_1_nodes_1_1_computation_1_1_scalar_sub_node.html" title="Represents a scalar subtraction operation node in a computational graph.">ScalarSubNode</a></code> to propagate gradients. </p>
<p>The <code><a class="el" href="#a7fc0b1b32288b94521f260b372cc7b63" title="Backward pass for the ScalarSubNode to propagate gradients.">backward()</a></code> method propagates the gradient of the loss from the output tensor back to the input tensor. Since the derivative of subtraction with respect to the input is 1, the gradient from the output tensor is directly copied to the input tensor's gradient.</p>
<ul>
<li>The method checks if the input tensor requires gradients. If true, the gradient of the <code>output</code> tensor is copied directly to the gradient of the input tensor using <code>cudaMemcpy</code>.</li>
<li>This operation ensures efficient gradient propagation without requiring additional computation.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd><ul>
<li>The backward pass assumes that the gradient of the <code>output</code> tensor is already computed and properly initialized.</li>
<li>The subtraction operation does not alter the gradient values, enabling a straightforward gradient transfer.</li>
</ul>
</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a84d13d33c97accd55f90a582cc0a5d9f" title="Forward pass for the ScalarSubNode to perform scalar subtraction.">forward()</a> for the scalar subtraction computation in the <a class="el" href="#a84d13d33c97accd55f90a582cc0a5d9f" title="Forward pass for the ScalarSubNode to perform scalar subtraction.">forward</a> pass.</dd></dl>
<dl class="section author"><dt>Author</dt><dd>Mgepahmge (<a href="https://github.com/Mgepahmge">https://github.com/Mgepahmge</a>)</dd></dl>
<dl class="section date"><dt>Date</dt><dd>2024/12/05 </dd></dl>

<p>Implements <a class="el" href="class_neu_zephyr_1_1_nodes_1_1_node.html#a41914155871c84330701f9d1649b39f3">NeuZephyr::Nodes::Node</a>.</p>

<p class="definition">Definition at line <a class="el" href="_nodes_8cu_source.html#l00227">227</a> of file <a class="el" href="_nodes_8cu_source.html">Nodes.cu</a>.</p>

</div>
</div>
<a id="a84d13d33c97accd55f90a582cc0a5d9f" name="a84d13d33c97accd55f90a582cc0a5d9f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a84d13d33c97accd55f90a582cc0a5d9f">&#9670;&#160;</a></span>forward()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void NeuZephyr::Nodes::Computation::ScalarSubNode::forward </td>
          <td>(</td>
          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Forward pass for the <code><a class="el" href="class_neu_zephyr_1_1_nodes_1_1_computation_1_1_scalar_sub_node.html" title="Represents a scalar subtraction operation node in a computational graph.">ScalarSubNode</a></code> to perform scalar subtraction. </p>
<p>The <code><a class="el" href="#a84d13d33c97accd55f90a582cc0a5d9f" title="Forward pass for the ScalarSubNode to perform scalar subtraction.">forward()</a></code> method computes the element-wise subtraction of a scalar value from the input tensor. Internally, it utilizes the addition kernel (<code>ScalarAdd</code>) by treating the subtraction as addition with a negated scalar value, which was preprocessed during node construction.</p>
<ul>
<li>A CUDA kernel (<code>ScalarAdd</code>) is launched to add the negated scalar value to each element of the input tensor.</li>
<li>The grid and block dimensions are dynamically calculated based on the size of the output tensor to optimize GPU parallelism.</li>
<li>The result of the operation is stored in the <code>output</code> tensor.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd><ul>
<li>The subtraction operation is effectively performed as <code>output[i] = input[i] - scalar</code>, achieved by using <code>output[i] = input[i] + (-scalar)</code> for efficiency.</li>
<li>The scalar value was negated during construction, making this method consistent with the addition kernel.</li>
</ul>
</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a7fc0b1b32288b94521f260b372cc7b63" title="Backward pass for the ScalarSubNode to propagate gradients.">backward()</a> for gradient propagation in the <a class="el" href="#a7fc0b1b32288b94521f260b372cc7b63" title="Backward pass for the ScalarSubNode to propagate gradients.">backward</a> pass.</dd></dl>
<dl class="section author"><dt>Author</dt><dd>Mgepahmge (<a href="https://github.com/Mgepahmge">https://github.com/Mgepahmge</a>)</dd></dl>
<dl class="section date"><dt>Date</dt><dd>2024/12/05 </dd></dl>

<p>Implements <a class="el" href="class_neu_zephyr_1_1_nodes_1_1_node.html#a64e42ba40199e35bfe453ef14b2d15c0">NeuZephyr::Nodes::Node</a>.</p>

<p class="definition">Definition at line <a class="el" href="_nodes_8cu_source.html#l00221">221</a> of file <a class="el" href="_nodes_8cu_source.html">Nodes.cu</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="class_neu_zephyr_1_1_nodes_1_1_computation_1_1_scalar_sub_node_a84d13d33c97accd55f90a582cc0a5d9f_cgraph.png" border="0" usemap="#aclass_neu_zephyr_1_1_nodes_1_1_computation_1_1_scalar_sub_node_a84d13d33c97accd55f90a582cc0a5d9f_cgraph" alt=""/></div>
<map name="aclass_neu_zephyr_1_1_nodes_1_1_computation_1_1_scalar_sub_node_a84d13d33c97accd55f90a582cc0a5d9f_cgraph" id="aclass_neu_zephyr_1_1_nodes_1_1_computation_1_1_scalar_sub_node_a84d13d33c97accd55f90a582cc0a5d9f_cgraph">
<area shape="rect" title="Forward pass for the ScalarSubNode to perform scalar subtraction." alt="" coords="5,5,219,48"/>
<area shape="rect" href="namespace_neu_zephyr_1_1_kernels.html#ae16af33f05814c3e834a16f17b829cf3" title="Kernel function to add a scalar to each element of a matrix on the GPU." alt="" coords="267,5,404,48"/>
<area shape="poly" title=" " alt="" coords="219,24,251,24,251,29,219,29"/>
</map>
</div>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>D:/C Program/Simple-CPP-DL-Framework/include/NeuZephyr/<a class="el" href="_nodes_8cuh_source.html">Nodes.cuh</a></li>
<li>D:/C Program/Simple-CPP-DL-Framework/src/<a class="el" href="_nodes_8cu_source.html">Nodes.cu</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
</small></address>
</div><!-- doc-content -->
</body>
</html>
